package br.fbv.compreja.activity.home;

import java.util.List;

import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import br.fbv.compreja.R;
import br.fbv.compreja.activity.about.AboutActivity;
import br.fbv.compreja.activity.base.BaseActivity;
import br.fbv.compreja.activity.base.Util;
import br.fbv.compreja.activity.carrinho.CarrinhoActivity;
import br.fbv.compreja.activity.produto.ProdutoActivity;
import br.fbv.compreja.negocio.produto.Produto;
import br.fbv.compreja.negocio.produto.ProdutoController;

public class HomeActivity extends BaseActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.home);

		criarBotaoScan();
		criarBotaoCarrinho();

		montarListaOfertas();
	}

	private void criarBotaoCarrinho() {
		Button btCarrinho = (Button) findViewById(R.id.bt_carrinho);
		btCarrinho.setOnClickListener(goToActivity(CarrinhoActivity.class));
	}

	private void montarListaOfertas() {
		List<Produto> ofertas = ProdutoController.getInstance(this)
				.consultarOfertas(5);
		// É Só descomentar as linhas abaixo e certificar-se que no Home.xml
		// existe os 5 blocos de ofertas de 01 à oferta 05 observar a
		// nomenclatura dos views Imagem Nome e descricao.

		int[] vitrineImg = { R.id.oferta01_img, R.id.oferta02_img,
				R.id.oferta03_img, R.id.oferta04_img, R.id.oferta05_img };
		int[] vitrineDesc = { R.id.oferta01_product_description,
				R.id.oferta02_product_description,
				R.id.oferta03_product_description,
				R.id.oferta04_product_description,
				R.id.oferta05_product_description };
		int[] vitrineNome = { R.id.oferta01_product_name,
				R.id.oferta02_product_description,
				R.id.oferta03_product_description,
				R.id.oferta04_product_description,
				R.id.oferta05_product_description };

		for (int i = 0; i < ofertas.size(); i++) {
			ImageView ofertaImg = (ImageView) findViewById(vitrineImg[i]);
			Drawable drawable = Util.loadImageFromWebOperations(ofertas.get(i)
					.getUrlImagemP());
			ofertaImg.setImageDrawable(drawable);

			TextView produtoNome = (TextView) findViewById(vitrineNome[i]);
			produtoNome.setText(ofertas.get(i).getNome());

			TextView produtoDescricao = (TextView) findViewById(vitrineDesc[i]);
			produtoDescricao.setText(ofertas.get(i).getDescricao());

			OnClickListener clickListenerDetalharProduto = criarClickListenerDetalharProduto(ofertas
					.get(i).getBarcode());
			ofertaImg.setOnClickListener(clickListenerDetalharProduto);
			produtoNome.setOnClickListener(clickListenerDetalharProduto);
		}

	}

	private OnClickListener criarClickListenerDetalharProduto(
			final String barcode) {
		return new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent produtoIntent = new Intent(HomeActivity.this,
						ProdutoActivity.class);
				produtoIntent.putExtra(Produto.BARCODE, barcode);
				startActivity(produtoIntent);
			}
		};
	}

	private void criarBotaoScan() {
		Button btScan = (Button) findViewById(R.id.bt_scan);
		btScan.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(
						"com.google.zxing.client.android.SCAN");
				startActivityForResult(intent, 0);
			}
		});
	}

	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
		if (requestCode == 0) {
			if (resultCode == RESULT_OK) {
				String contents = intent.getStringExtra("SCAN_RESULT");
				// if
				// (ProdutoController.getInstance(this).existeProduto(contents))
				// {
				Intent goToProduto = new Intent(HomeActivity.this,
						ProdutoActivity.class);
				goToProduto.putExtra("barcode", contents);
				HomeActivity.this.startActivity(goToProduto);
				// } else {
				// String msg = "O Produto [" + contents
				// + "] nao foi encontrado.";
				// showAlertBox(msg);
				// }
			}
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.layout.home_activity_option_menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		boolean retorno = true;
		switch (item.getItemId()) {
		case R.id.menu_opt_minha_conta:

			break;
		case R.id.menu_opt_ponto_venda:

			break;
		case R.id.menu_opt_sobre:
			startActivity(new Intent(this, AboutActivity.class));
			break;

		default:
			retorno = super.onOptionsItemSelected(item);
			break;
		}
		return retorno;
	}
}
